Add stubdomain support. See stubdom/README for usage details.
authorKeir Fraser <keir.fraser@citrix.com>
Tue, 12 Feb 2008 14:35:39 +0000 (14:35 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Tue, 12 Feb 2008 14:35:39 +0000 (14:35 +0000)
commit0243b256d6187ea610174531607366945e489605
treefd2de9267b7493642626f8c84d7c81ebcd336bed
parent67bfbd67d1311a1a590b47e568a07622d4492873
Add stubdomain support. See stubdom/README for usage details.

- Move PAGE_SIZE and STACK_SIZE into __PAGE_SIZE and __STACK_SIZE in
  arch_limits.h so as to permit getting them from there without
  pulling all the internal Mini-OS defines.
- Setup a xen-elf cross-compilation environment in stubdom/cross-root
- Add a POSIX layer on top of Mini-OS by linking against the newlib C
  library and lwIP, and implementing the Unixish part in mini-os/lib/sys.c
- Cross-compile zlib and libpci too.
- Add an xs.h-compatible layer on top of Mini-OS' xenbus.
- Cross-compile libxc with an additional xc_minios.c and a few things
  disabled.
- Cross-compile ioemu with an additional block-vbd, but without sound,
  tpm and other details.  A few hacks are needed:
  - Align ide and scsi buffers at least on sector size to permit
  direct transmission to the block backend. While we are at it, just
  page-align it to possibly save a segment. Also, limit the scsi
  buffer size because of limitations of the block paravirtualization
  protocol.
  - Allocate big tables dynamically rather that letting them go to
  bss: when Mini-OS gets installed in memory, bss is not lazily
  allocated, and doing so during Mini-OS is unnecessarily trick while
  we can simply use malloc.
- Had to change the Mini-OS compilation somehow, so as to export
  Mini-OS compilation flags to the Makefiles of libxc and ioemu.

Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
82 files changed:
.hgignore
Config.mk
extras/mini-os/Config.mk [new file with mode: 0644]
extras/mini-os/Makefile
extras/mini-os/arch/ia64/Makefile
extras/mini-os/arch/ia64/minios-ia64.lds
extras/mini-os/arch/ia64/mm.c
extras/mini-os/arch/x86/Makefile
extras/mini-os/arch/x86/arch.mk
extras/mini-os/arch/x86/minios-x86_32.lds
extras/mini-os/arch/x86/minios-x86_64.lds
extras/mini-os/arch/x86/mm.c
extras/mini-os/arch/x86/x86_32.S
extras/mini-os/arch/x86/x86_64.S
extras/mini-os/blkfront.c
extras/mini-os/include/arch/cc.h
extras/mini-os/include/byteswap.h [new file with mode: 0644]
extras/mini-os/include/console.h
extras/mini-os/include/errno.h
extras/mini-os/include/fcntl.h
extras/mini-os/include/fs.h
extras/mini-os/include/ia64/arch_limits.h [new file with mode: 0644]
extras/mini-os/include/ia64/arch_mm.h
extras/mini-os/include/ia64/page.h
extras/mini-os/include/lib.h
extras/mini-os/include/linux/types.h [new file with mode: 0644]
extras/mini-os/include/mm.h
extras/mini-os/include/netfront.h
extras/mini-os/include/posix/dirent.h [new file with mode: 0644]
extras/mini-os/include/posix/limits.h [new file with mode: 0644]
extras/mini-os/include/posix/netdb.h [new file with mode: 0644]
extras/mini-os/include/posix/netinet/in.h [new file with mode: 0644]
extras/mini-os/include/posix/netinet/tcp.h [new file with mode: 0644]
extras/mini-os/include/posix/pthread.h [new file with mode: 0644]
extras/mini-os/include/posix/stdlib.h [new file with mode: 0644]
extras/mini-os/include/posix/strings.h [new file with mode: 0644]
extras/mini-os/include/posix/sys/ioctl.h [new file with mode: 0644]
extras/mini-os/include/posix/sys/mman.h [new file with mode: 0644]
extras/mini-os/include/posix/sys/select.h [new file with mode: 0644]
extras/mini-os/include/posix/sys/socket.h [new file with mode: 0644]
extras/mini-os/include/posix/termios.h [new file with mode: 0644]
extras/mini-os/include/posix/time.h [new file with mode: 0644]
extras/mini-os/include/posix/unistd.h [new file with mode: 0644]
extras/mini-os/include/sched.h
extras/mini-os/include/sys/time.h
extras/mini-os/include/time.h
extras/mini-os/include/x86/arch_limits.h [new file with mode: 0644]
extras/mini-os/include/x86/arch_mm.h
extras/mini-os/include/x86/arch_sched.h
extras/mini-os/include/x86/arch_spinlock.h
extras/mini-os/include/x86/os.h
extras/mini-os/lib/sys.c [new file with mode: 0644]
extras/mini-os/lib/xs.c [new file with mode: 0644]
extras/mini-os/main-caml.c [new file with mode: 0644]
extras/mini-os/main.c [new file with mode: 0644]
extras/mini-os/minios.mk
extras/mini-os/mm.c
extras/mini-os/netfront.c
extras/mini-os/sched.c
stubdom/Makefile [new file with mode: 0644]
stubdom/README [new file with mode: 0644]
stubdom/caml/Makefile [new file with mode: 0644]
stubdom/caml/hello.ml [new file with mode: 0644]
stubdom/libpci.config.h [new file with mode: 0644]
stubdom/libpci.config.mak [new file with mode: 0644]
stubdom/stubdom-dm [new file with mode: 0644]
tools/ioemu/Makefile.target
tools/ioemu/aes.c
tools/ioemu/block-vbd.c [new file with mode: 0644]
tools/ioemu/block.c
tools/ioemu/configure
tools/ioemu/exec-all.h
tools/ioemu/hw/ide.c
tools/ioemu/hw/scsi-disk.c
tools/ioemu/hw/xen_machine_fv.c
tools/ioemu/vl.c
tools/ioemu/vl.h
tools/ioemu/vnc.c
tools/ioemu/xenstore.c
tools/libxc/Makefile
tools/libxc/ia64/Makefile
tools/libxc/xc_minios.c [new file with mode: 0644]